/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador;

import Dao.DaoCooperativa;
import Modelo.Chofer;
import Modelo.Cooperativa;
import Modelo.Listas;
import Modelo.Rutas;
import Vista.Mensajes;
import Vista.JFrameCooperativa;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ControladorCooperativa implements ActionListener, KeyListener {

    private JFrameCooperativa formCooperativa;

    public ControladorCooperativa() 
    {
        formCooperativa = new JFrameCooperativa();
        formCooperativa.agregarListener(this);
        formCooperativa.setVisible(true);
        Enabled(true);

        //-------------------------------
        formCooperativa.getTxtRifC().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                rifKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {
                try {
                    rifkeyPressed(e);
                } catch (SQLException ex) {
                    Logger.getLogger(ControladorCooperativa.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        //-------------------------------
        formCooperativa.getTxtNombre().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                nombreKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                nombrekeyPressed(e);
            }
        });
        //-------------------------------
        formCooperativa.getTxtTelefonoC().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                telefonoKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                telefonokeyPressed(e);
            }
        });
        formCooperativa.getTxtImpuesto().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                impuestoKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                impuestokeyPressed(e);
            }
        });
        formCooperativa.getTxtSeguro().addKeyListener(new KeyAdapter() {
            public void keyTyped(KeyEvent e) {
                seguroKeyTyped(e);
            }

            public void keyPressed(KeyEvent e) {

                segurokeyPressed(e);
            }
        });
    }

    //-------------------------------
    // Zona de eventos Typed
    //-------------------------------
    private void rifKeyTyped(java.awt.event.KeyEvent evt) {
        String Cadena;
        char Caracter;

        Cadena = formCooperativa.getTxtRifC().getText();
        if (Cadena.length() == 8) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') {
                evt.consume();
            }

            if (Caracter < '0' || Caracter > '9') {
                evt.consume();
            }
        }
    }

    private void nombreKeyTyped(java.awt.event.KeyEvent evt) {
        String Cadena;
        String CarString;
        char Caracter;

        Cadena = formCooperativa.getTxtNombre().getText();
        if (Cadena.length() == 20) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            CarString = Caracter + "";
            CarString = CarString.toUpperCase();
            Caracter = CarString.charAt(0);

            if (Caracter == ' ') {
                return;
            }

            if (Caracter < 'A' || Caracter > 'Z') {
                evt.consume();
            }

        }
    }

    private void telefonoKeyTyped(java.awt.event.KeyEvent evt) {
        String Cadena;
        char Caracter;

        Cadena = formCooperativa.getTxtTelefonoC().getText();
        if (Cadena.length() == 11) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') {
                evt.consume();
            }

            if (Caracter < '0' || Caracter > '9') {
                evt.consume();
            }
        }
    }

    private void impuestoKeyTyped(java.awt.event.KeyEvent evt) {
        char Caracter;
        String Cadena;

        Cadena = formCooperativa.getTxtImpuesto().getText();
        if (Cadena.length() == 3) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();
            if (Caracter == '.') {
                evt.consume();
            }

            if (Caracter < '0' || Caracter > '9') {
                evt.consume();
            }
        }
    }

    private void seguroKeyTyped(java.awt.event.KeyEvent evt) {
        char Caracter;
        String Cadena;

        Cadena = formCooperativa.getTxtSeguro().getText();
        if (Cadena.length() == 2) {
            evt.consume();
        } else {
            Caracter = evt.getKeyChar();

            if (Caracter == '.') {
                evt.consume();
            }

            if (Caracter < '0' || Caracter > '9') {
                evt.consume();
            }
        }
    }
    //-------------------------------
    // Zona de eventos Pressed
    //-------------------------------           

    private void rifkeyPressed(KeyEvent e) throws SQLException 
    {
      ResultSet registroCoop;
      DaoCooperativa daoCoop=new DaoCooperativa();
      
        
        if (e.getSource().equals(formCooperativa.getTxtRifC())) 
        {
            String Cadena;
            Cadena = formCooperativa.getTxtRifC().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 8) {
                Mensajes.Aviso("Rif invalido", "");
                formCooperativa.getTxtRifC().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 8) 
              {
                 registroCoop=daoCoop.BuscarCooperativa(Cadena);
                                
                if (registroCoop.next())                                
                {
                    formCooperativa.getTxtNombre().setText(registroCoop.getString("nombrec"));                                                        
                    formCooperativa.getTxtTelefonoC().setText(registroCoop.getString("telefonoc"));                    
                    formCooperativa.getTxtImpuesto().setText(registroCoop.getString("impuestoc"));                                                                                   
                    formCooperativa.getTxtSeguro().setText(registroCoop.getString("seguroc"));
                    

                    Mensajes.Aviso("Cooperativa ya Existe", "");
                    Limpiar();

                } else {
                    Enabled(true);
                    formCooperativa.getTxtNombre().requestFocusInWindow();

                }
            }

        }
    }

    private void nombrekeyPressed(KeyEvent e) {
        if (e.VK_ENTER == e.getKeyCode()) {
            formCooperativa.getTxtTelefonoC().requestFocusInWindow();
        }
    }

    private void telefonokeyPressed(KeyEvent e) {
        if (e.getSource().equals(formCooperativa.getTxtTelefonoC())) {

            String Cadena;
            Cadena = formCooperativa.getTxtTelefonoC().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 11) {
                Mensajes.Aviso("Telefono invalido", "");
                formCooperativa.getTxtTelefonoC().requestFocusInWindow();
                return;
            }
            
        }
    }

    private void impuestokeyPressed(KeyEvent e) {
        if (e.getSource().equals(formCooperativa.getTxtImpuesto())) {

            String Cadena;
            Cadena = formCooperativa.getTxtImpuesto().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 3) {
                Mensajes.Aviso("Impuesto invalido", "");
                formCooperativa.getTxtImpuesto().requestFocusInWindow();
                return;
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 3) {
                formCooperativa.getTxtSeguro().requestFocusInWindow();
            }
            
        }
    }

    private void segurokeyPressed(KeyEvent e) {
        if (e.getSource().equals(formCooperativa.getTxtSeguro())) {

            String Cadena;
            Cadena = formCooperativa.getTxtSeguro().getText();

            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() != 2) {
                Mensajes.Aviso("Seguro invalido", "");
                formCooperativa.getTxtSeguro().requestFocusInWindow();
            }
            if (e.VK_ENTER == e.getKeyCode() && Cadena.length() == 2) {
            }
        }
    }
    //-------------------------------
    // Zona de eventos
    //------------------------------- 

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource().equals(formCooperativa.getBtnSalirC())) {
            formCooperativa.dispose();
        }

        if (e.getSource().equals(formCooperativa.getBtnBuscarC())) {
            try {            
                new ControladorConsulCoop();
            } catch (SQLException ex) {
                Logger.getLogger(ControladorCooperativa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (e.getSource().equals(formCooperativa.getBtnGuardarC())) {
            Grabar();
        }
        if (e.getSource().equals(formCooperativa.getBtnCancelarC())) {
            Limpiar();
            Enabled(false);
        }

    }
    //-------------------------------
    // Existe
    //-------------------------------     

    //-------------------------------
    // Grabar
    //------------------------------- 

    private void Grabar() {
        Cooperativa coop = new Cooperativa();
        String Cadena;

        Cadena = formCooperativa.getTxtRifC().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Rif Vacia", "");
            formCooperativa.getTxtRifC().requestFocusInWindow();
            return;
        }

        Cadena = formCooperativa.getTxtNombre().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Nombre Vacio", "");
            formCooperativa.getTxtNombre().requestFocusInWindow();
            return;
        }

        Cadena = formCooperativa.getTxtTelefonoC().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Telefono vacio", "");
            formCooperativa.getTxtTelefonoC().requestFocusInWindow();
            return;
        }
        if (Cadena.length() != 11) {
            Mensajes.Aviso("Telefono invalido", "");
            formCooperativa.getTxtTelefonoC().requestFocusInWindow();
            return;

        }
        Cadena = formCooperativa.getTxtImpuesto().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Impuesto vacio", "");
            formCooperativa.getTxtImpuesto().requestFocusInWindow();
            return;
        }

        if (Cadena.length() != 3) {
            Mensajes.Aviso("Impuesto invalido", "");
            formCooperativa.getTxtImpuesto().requestFocusInWindow();
            return;
        }

        Cadena = formCooperativa.getTxtSeguro().getText();
        if (Cadena.length() == 0) {
            Mensajes.Aviso("Seguro vacio", "");
            formCooperativa.getTxtSeguro().requestFocusInWindow();
            return;
        }

        if (Cadena.length() != 2) {
            Mensajes.Aviso("Seguro invalido", "");
            formCooperativa.getTxtSeguro().requestFocusInWindow();
            return;
        }

        coop.Cooperativa(formCooperativa.getTxtRifC().getText(),
                formCooperativa.getTxtNombre().getText(),
                formCooperativa.getTxtTelefonoC().getText(),
                Integer.parseInt(formCooperativa.getTxtImpuesto().getText()),
                Integer.parseInt(formCooperativa.getTxtSeguro().getText()));
        
        DaoCooperativa daoCooperativa=new DaoCooperativa();
        daoCooperativa.InsertarCooperativa(coop);
        
        Mensajes.Aviso("Cooperativa guardada con exito", "");
        Limpiar();
        Enabled(false);
        formCooperativa.getTxtRifC().requestFocusInWindow();
    }

    //-------------------------------
    //Enable
    //-------------------------------
    private void Enabled(boolean Status) {
        formCooperativa.getTxtRifC().setEnabled(Status);
        formCooperativa.getTxtNombre().setEnabled(Status);
        formCooperativa.getTxtTelefonoC().setEnabled(Status);
        formCooperativa.getTxtImpuesto().setEnabled(Status);
        formCooperativa.getTxtSeguro().setEnabled(Status);
    }

    //-------------------------------
    //Limpiar
    //-------------------------------
    private void Limpiar() {
        formCooperativa.getTxtRifC().setText("");
        formCooperativa.getTxtNombre().setText("");
        formCooperativa.getTxtTelefonoC().setText("");
        formCooperativa.getTxtImpuesto().setText("");
        formCooperativa.getTxtSeguro().setText("");
    }

    @Override
    public void keyTyped(KeyEvent e) 
    {
        if(e.getSource().equals(formCooperativa.getTxtRifC()))
        {
            rifKeyTyped(e);
        }
        if(e.getSource().equals(formCooperativa.getTxtNombre()))
        {
           nombreKeyTyped(e); 
        }
        if(e.getSource().equals(formCooperativa.getTxtTelefonoC()))
        {
           telefonoKeyTyped(e); 
        }
        if(e.getSource().equals(formCooperativa.getTxtImpuesto()))
        {
            impuestoKeyTyped(e);
        }
        if(e.getSource().equals(formCooperativa.getTxtSeguro()))
        {
            seguroKeyTyped(e);
        }
    }

    @Override
    public void keyPressed(KeyEvent e) 
    {
        if(e.getSource().equals(formCooperativa.getTxtRifC()))
        {
            try {
                rifkeyPressed(e);
            } catch (SQLException ex) {
                Logger.getLogger(ControladorCooperativa.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if(e.getSource().equals(formCooperativa.getTxtNombre()))
        {
           nombrekeyPressed(e); 
        }
        if(e.getSource().equals(formCooperativa.getTxtTelefonoC()))
        {
           telefonokeyPressed(e); 
        }
        if(e.getSource().equals(formCooperativa.getTxtImpuesto()))
        {
            impuestokeyPressed(e);
        }
        if(e.getSource().equals(formCooperativa.getTxtSeguro()))
        {
            segurokeyPressed(e);
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {
    }
}